import 'package:flutter/material.dart';
/*
Align和Stack对比
1.定位参考系统不同；Stack/Positioned定位的的参考系可以是父容器矩形的四个顶点；而Align则需要先通过alignment 参数来确定坐标原点，不同的alignment会对应不同原点，最终的偏移是需要通过alignment的转换公式来计算出。
2.Stack可以有多个子元素，并且子元素可以堆叠，而Align只能有一个子元素，不存在堆叠。
 */
class Exam_14 extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      appBar: AppBar(
        title: Text("对齐与相对定位Align"),
      ),
      body: Content(),
    );
  }

}

class Content extends StatelessWidget{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Column(
      children: <Widget>[
        Container(
          height: 120.0,
          width: 120.0,
          color: Colors.amber,
          child: Align(
            alignment: Alignment.bottomRight,
            child: FlutterLogo(
              size: 66,
            ),
          ),
        ),
        Text("- - - - - - - - - "),
        Container(
          height: 120.0,
          width: 120.0,
          color: Colors.amber,
          child: Align(
            alignment: Alignment(-1.0,-1),//Alignment矩形的中心点作为坐标原点
            child: FlutterLogo(
              size: 66,
            ),
          ),
        ),
        Text("- - - - - - - - - "),
        Container(
          height: 120.0,
          width: 120.0,
          color: Colors.amber,
          child: Align(
            alignment: FractionalOffset(0, 0),//FractionalOffset是坐标原点为矩形的左侧顶点
            child: FlutterLogo(
              size: 66,
            ),
          ),
        ),

        DecoratedBox(
          decoration: BoxDecoration(color: Colors.red),
          child: Center(
            child: Text("jack"),
          ),
        ),
        
        DecoratedBox(
          decoration: BoxDecoration(color: Colors.yellow),
          child: Center(
            widthFactor: 1,
            heightFactor: 1,
            child: Text("哥斯拉"),
          ),
        ),
      ],
    );
  }

}